<?php

interface LoadAble {
	public function load();
}
interface Database_Definitiable {
	public function database_definitions();
}
interface Site_Definitiable {
	public function site_definitions();
}
interface Lang_Definitiable {
	public function lang_definitions();
}
interface Router_Loadable {
	public function load_router();
}

class Definitions_Loader implements Database_Definitiable,
									Site_Definitiable,
									Lang_Definitiable,
									Router_Loadable {
	
	public $loaded = array();
	
	public function load(){
		try {
			// settings loader
			$loaded['lang_definitions'] = $this->lang_definitions();
			$loaded['site_definitions'] = $this->site_definitions();
			$loaded['database_definitions'] = $this->database_definitions();
			$loaded['router_class'] = $this->load_router();
			return $loaded;
		}
		catch(Exception $e){
			echo $e->getMessage();
		}
	}
	
	public function load_router(){
		try {
			if(file_exists("./router/router.php")){
				$router = "./router/router.php";
				return $router;
			}
			else {
				throw new Exception('Nie można załadować routera aplikacji!');
			}
		}
		catch(Exception $e){
			return $e->getMessage();
		}
	}
	
	public function database_definitions(){
		try {
			if(file_exists("./includes/page_definitions.php")){
				$database_definitions = "./includes/database_definitions.php";
				return $database_definitions;
			}
			else {
				throw new ErrorException('Nie można załadować pliku z definicjami bazy danych.');
			}
		}
		catch(Exception $e){
			return $e->getMessage();
		}
	}
	
	public function site_definitions(){
		try {
			if(file_exists("./includes/page_definitions.php")){
				$page_definitions = "./includes/page_definitions.php";
				return $page_definitions;
			}
			else {
				throw new Exception('Nie można załadować pliku z definicjami katalogu głównego witryny. Sprawdź, czy plik istnieje.');
			}
		}
		catch(Exception $e){
			return $e->getMessage();
		}
	}
	
	public function lang_definitions(){
		try {
			if(file_exists("./lang/polish_lang_definitions.php")){
				$lang_definitions = "./lang/polish_lang_definitions.php";
				return $lang_definitions;
			}
			else {
				throw new Exception("Plik językowy nie mógł zostać załądowany. Sprawdź, czy plik istnieje."); 
			}
		}
		catch(Exception $e){
			return $e->getMessage();
		}
	}
	
	
}